package TP2.implementation;

import TP2.NodoDiccionarioSimple;
import TP2.TDA.ConjuntoTDA;
import TP2.TDA.DiccionarioSimpleTDA;

public class DiccionarioSimpleListaImpl implements DiccionarioSimpleTDA {
	private NodoDiccionarioSimple lista;

	public void inicializar() {
		lista = null;
	}

	public void agregar(int clave, int valor) {
		NodoDiccionarioSimple aux = lista;
		
		while(aux != null && aux.getClave() != clave) {
			aux = aux.getSgte();
		}
		
		if(aux != null) {
			aux.setValor(valor);
		} else {		// Inserto al comienzo
			NodoDiccionarioSimple nuevo = new NodoDiccionarioSimple();
			nuevo.setClave(clave);
			nuevo.setValor(valor);
			nuevo.setSgte(lista);
			lista = nuevo;
		}
	}

	public void eliminar(int clave) {
		NodoDiccionarioSimple aux, prev;
		
		aux = lista;
		prev = null;
		while(aux != null && aux.getClave() != clave) {
			prev = aux;
			aux = aux.getSgte();
		}
		if(aux != null) {	// Lo encontro
			prev.setSgte(aux.getSgte());
		} else {
			// No lo encontro, no hago nada
		}
	}

	public int recuperar(int clave) {
		NodoDiccionarioSimple aux;
		
		aux = lista;
		while(aux.getClave() != clave) {
			aux = aux.getSgte();
		}

		return aux.getValor();
	}

	public ConjuntoTDA claves() {
		NodoDiccionarioSimple aux;
		ConjuntoTDA conj = new ConjuntoTamNoAcotListaImpl1();
		conj.inicializar();
		
		aux = lista;
		while(aux != null) {
			conj.agregar(aux.getClave());
			aux = aux.getSgte();
		}
		
		return conj;
	}

}
